GLSL: ベクトルと行列の積
#GLSL #行列 #ベクトル #数学
GLSLにおいて、ベクトルと行列を掛け算する
ベクトルを左に置くか右に置くかで、ベクトルが行ベクトルになったり列ベクトルになったりするので注意
互いに、転置した結果となる
回転行列を行ベクトルに対して適用した場合、回転行列は転置したら逆行列となるため、行列が表す回転とは逆に回転する
一覧
以下のベクトル$ \vec v・行列$ \bf Mをおく
code:glsl
vec2 v = vec2(x, y);
mat2 m = mat2(a, c, b, d); // == mat2(vec2(a, c), vec2(b, d))
行ベクトル * 行列
$ \vec v \ {\bf M} = \begin{pmatrix} x & y \end{pmatrix} \begin{pmatrix} a & b \\ c & d \end{pmatrix} = \begin{pmatrix} ax + yc & bx + dy \end{pmatrix}
vec2 vt = v * m;
v *= m;
行列 * 列ベクトル
$ {\bf M} \ \vec v = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} ax + by \\ cx + dy \end{pmatrix}
vec2 vt = m * v;